package org.example.code.test2024.eleven;

import java.io.File;

public class ImageRename {

    /**
     * 读取文件夹中的所有图片，并按规则修改文件名
     *
     * @param folderPath 文件夹路径
     * @param oldPrefix  需要替换的旧前缀
     * @param newPrefix  替换后的新前缀
     */
    public static void renameImages(String folderPath, String oldPrefix, String newPrefix) {
        File folder = new File(folderPath);

        // 检查文件夹是否存在
        if (!folder.exists() || !folder.isDirectory()) {
            System.out.println("指定的文件夹不存在或不是文件夹: " + folderPath);
            return;
        }

        // 获取文件夹中的所有文件
        File[] files = folder.listFiles();
        if (files == null || files.length == 0) {
            System.out.println("文件夹中没有找到文件: " + folderPath);
            return;
        }

        // 遍历文件并修改文件名
        for (File file : files) {
            // 检查是否是图片文件
            if (file.isFile() && isImageFile(file.getName())) {
                String oldName = file.getName();

                // 判断文件名是否包含旧前缀
                if (oldName.contains(oldPrefix)) {
                    // 替换旧前缀生成新文件名
                    String newName = oldName.replace(oldPrefix, newPrefix);

                    // 执行重命名操作
                    File newFile = new File(folderPath + File.separator + newName);
                    boolean success = file.renameTo(newFile);
                    if (success) {
                        System.out.println("已重命名: " + oldName + " -> " + newName);
                    } else {
                        System.out.println("重命名失败: " + oldName);
                    }
                } else {
                    System.out.println("文件名中未找到指定前缀: " + oldName);
                }
            }
        }
        System.out.println("文件名修改完成！");
    }

    /**
     * 判断文件是否为图片文件
     *
     * @param fileName 文件名
     * @return 是否为图片文件
     */
    private static boolean isImageFile(String fileName) {
        String lowerCaseName = fileName.toLowerCase();
        return lowerCaseName.endsWith(".png") || lowerCaseName.endsWith(".jpg") ||
               lowerCaseName.endsWith(".jpeg") || lowerCaseName.endsWith(".bmp") ||
               lowerCaseName.endsWith(".gif");
    }

    public static void main(String[] args) {
        // 文件夹路径C:\Users\yuxin\Pictures\Screenshots\0new\11
        String folderPath = "C:/Users/yuxin/Pictures/Screenshots/0new/11";
        // 需要替换的旧前缀
        String oldPrefix = "0.1.173";
        // 替换后的新前缀
        String newPrefix = "1.1.159";

        // 调用方法重命名图片
        renameImages(folderPath, oldPrefix, newPrefix);
    }
}
